package view.Professeurs;

import java.util.ArrayList;

import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

import Controller.*;
import Model.Classe;
import Model.Etudiant;
import Model.Exercice;

import view.Fenetre;

@SuppressWarnings("serial")
public class ArboPanel extends JPanel {

	public ArboPanel () {

		// Ajout de la transparence
		this.setOpaque(false);

		// Creation de l'arborescence des themes
		ArrayList<Etudiant> etudiants = new ArrayList<Etudiant> ();					// liste d'etudiants
		ArrayList<Exercice> exercices = new ArrayList<Exercice> ();					// liste d'exercices
		DefaultMutableTreeNode root = new DefaultMutableTreeNode();					// noeud racine
		DefaultMutableTreeNode node = null;											// noeud principal
		DefaultMutableTreeNode node2 = null;										// noeud secondaire
		DefaultMutableTreeNode node3 = null;										// noeud tertiaire
		JTree tree = null;															// arbre de noeuds

		ProfesseurController cProf = Fenetre.control.getProfesseurController();
		ArrayList<Classe> classes = cProf.listeClasse();


		// Creation de l'arborescence
		for (int i=0; i<classes.size(); i++) {

			// Affichage du nom de la classe sur le noeud principal
			node = new DefaultMutableTreeNode(classes.get(i).getNom());

			etudiants = cProf.listEtudiantClasse(classes.get(i));

			for (int j=0; j<etudiants.size(); j++) {

				// Affichage de l'etudiant sur le noeud secondaire et ajout du noeud secondaire au noeud principal
				node2 = new DefaultMutableTreeNode(etudiants.get(j).getNom() + " " + etudiants.get(j).getPrenom());
				node.add(node2);

				// Liste des exercices de l'etudiant ( on recopie dans une variable pour plus de clarte )
				exercices = etudiants.get(j).getExerciceAssocie();

				for (int k=0; k<exercices.size(); k++) {

					// Affichage de l'exercice sur le noeud tertiaire et ajout du noeud tertiaire au noeud secondaire
					node3 = new DefaultMutableTreeNode(exercices.get(k));
					node2.add(node3);

				}

			}

			root.add(node);

		}

		// Creation et ajout d'un arbre a partir du noeud principal
		tree = new JTree(root);
		tree.setRootVisible(false);
		tree.setOpaque(false);
		this.add(tree);

	}

}
